/**
 * 应用错误类
 * 用于标准化错误处理
 */

export class AppError extends Error {
  /**
   * 创建应用错误
   * @param {string} type - 错误类型代码
   * @param {string} message - 错误消息
   * @param {number} [statusCode=500] - HTTP状态码
   * @param {Error} [originalError] - 原始错误对象
   */
  constructor(type, message, statusCode = 500, originalError = null) {
    super(message);
    this.name = 'AppError';
    this.type = type;
    this.statusCode = statusCode;
    this.originalError = originalError;
    Error.captureStackTrace(this, this.constructor);
  }

  /**
   * 转换为JSON格式
   * @returns {object}
   */
  toJSON() {
    return {
      success: false,
      error: {
        type: this.type,
        message: this.message,
      },
    };
  }
}

export default AppError;

